package com.orangeforms.webadmin.upms.service;

import com.orangeforms.common.core.base.service.IBaseService;
import com.orangeforms.webadmin.upms.model.AttachResource;
import com.orangeforms.webadmin.upms.model.VisibleResource;

import java.util.List;

/**
 * 数字资源service接口
 *
 * @Author：howlrou
 * @Date：2024/8/12 15:24
 */
public interface BusinessDigitalResourceService extends IBaseService<VisibleResource, Long> {

    /**
     * 查询可预览资源存储
     *
     * @param digitalResourceId 可预览资源存储主键
     * @return 可预览资源存储
     */
    public VisibleResource selectVisibleResourceByDigitalResourceId(Long digitalResourceId);

    /**
     * 查询附件资源存储
     *
     * @param digitalResourceId 附件资源存储主键
     * @return 附件资源存储信息
     */
    public AttachResource selectAttachResourceByDigitalResourceId(Long digitalResourceId);

    /**
     * 查询可预览资源存储列表
     *
     * @param visibleResource 可预览资源存储
     * @return 可预览资源存储集合
     */
    public List<VisibleResource> selectVisibleResourceList(VisibleResource visibleResource);


    /**
     * 查询附件资源存储列表
     *
     * @param attachResource 附件资源过滤对象
     * @return 附件资源存储集合
     */
    public List<AttachResource> selectAttachResourceList(AttachResource attachResource);

    /**
     * 新增可预览资源存储
     *
     * @param visibleResource 可预览资源存储
     * @return 结果
     */
    public int insertVisibleResource(VisibleResource visibleResource);

    /**
     * 新增附件资源存储
     *
     * @param attachResource 附件资源存储
     * @return 结果
     */
    public int insertAttachResource(AttachResource attachResource);

    /**
     * 修改可预览资源存储
     *
     * @param visibleResource 可预览资源存储
     * @return 结果
     */
    public int updateVisibleResource(VisibleResource visibleResource);

    /**
     * 修改附件资源存储
     *
     * @param attachResource 附件资源存储对象
     * @return 结果
     */
    public int updateAttachResource(AttachResource attachResource);

    /**
     * 修改文件资源名称
     *
     * @param oldName
     * @param newName
     */
    public void updateAttachResource(String oldName, String newName);

    /**
     * 批量删除可预览资源存储
     *
     * @param digitalResourceIds 需要删除的可预览资源存储主键集合
     * @return 结果
     */
    public int deleteDigitalResourceByDigitalResourceIds(Long[] digitalResourceIds);

    /**
     * 删除可预览资源存储信息
     *
     * @param digitalResourceId 可预览资源存储主键
     * @return 结果
     */
    public int deleteDigitalResourceByDigitalResourceId(Long digitalResourceId);

    /**
     * 删除可预览资源并跟新表数据
     *
     * @param filePath
     * @return
     */
    public Integer deleteFiles(Long digitalResourceId, String[] filePath);

    /**
     * 删除可预览资源并删除表数据
     *
     * @param filePath
     * @return
     */
    public Integer deleteVisibleFile(Long digitalResourceId, String filePath);

    /**
     * 删除附件资源并删除表数据
     *
     * @param filePath
     * @return
     */
    public Integer deleteAttachFile(Long digitalResourceId, String filePath);

    /**
     * 删除数字资源本身
     *
     * @param filePaths
     * @return
     */
    public Integer deleteFiles(String[] filePaths);

    /**
     * 删除附件资源本身
     *
     * @param attachResource
     * @return
     */
    public void deleteFiles(AttachResource attachResource);

    /**
     * 扫描藏品指定目录将资源记录录入数据表
     *
     * @param collectionIds
     */
    public void scanResource(List<Long> collectionIds);

}
